/*
*
B DEF
A + — + ------- = 10
C GHI

（如果显示有问题，可以参见【图1.jpg】）

这个算式中AI代表19的数字，不同的字母代表不同的数字。

比如：
6+8/3+952/714 就是一种解法，
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法？

注意：你提交应该是个整数，不要填写任何多余的内容或说明性文字。
* */

import java.util.ArrayList;

public class 第三题 {
    public static int count = 0;
    public static ArrayList<String> list;

    public static void main(String[] args) {
        getPermutation("123456789");
        System.out.println(count);
    }

    public static void getPermutation(String A) {
        char[] array = A.toCharArray();
        getPermutationCore(array, 0);
    }

    public static void getPermutationCore(char[] array, int k) {
        if (k == array.length) {
            double a = Integer.parseInt(array[0] + "");
            double b = Integer.parseInt(array[1] + "");
            double c = Integer.parseInt(array[2] + "");
            double d = Integer.parseInt(array[3] + "") * 100 + Integer.parseInt(array[4] + "") * 10 + Integer.parseInt(array[5] + "");
            double e= Integer.parseInt(array[6] + "") * 100 + Integer.parseInt(array[7] + "") * 10 + Integer.parseInt(array[8] + "");

            if(a+(b/c)+(d/e)==10){
                System.out.println(new String(array));
                count++;
            }
            return;
        }

        for (int i = k; i < array.length; i++) {
            swap(array, i, k);
            getPermutationCore(array, k + 1);
            swap(array, i, k);
        }

    }

    public static void swap(char[] arr, int k, int i) {
        char temp = arr[k];
        arr[k] = arr[i];
        arr[i] = temp;
    }
}
